package cybertwin

import (
	_ "crypto/rsa"
	"github.com/panjf2000/gnet/v2"

	"sync"
	//"github.com/panjf2000/gnet/v2/pkg/logging"
	"time"
	//"google.golang.org/protobuf/proto"
	//"cybertwin/pb/model"
)

const (
	UE_STATUS_ESTABLISHED  = 1
	UE_STATUS_DISCONNECTED = 2
)

type UE_INFO struct {
	mac     string
	status  int // 记录UE现在的状态
	conn    gnet.Conn
	conn_mu *sync.Mutex

	token []byte // 记录和UE通信的token
}

type Request_Record struct {
	ueid          string // 请求是由哪个UE发出的
	providerID    uint32
	serviceID     uint32
	requestID     uint32 //
	dscp          byte
	start_time    time.Time     // 从UE接收到请求的时间是多少
	max_resp_time time.Duration // 该请求的最大响应时间
	raw_data      []byte        // 记录下该请求的参数，用于重传
	server_ip     []string      // 服务器的IP地址，可以记录多个
	server_port   []string      // 服务的端口号
	server_proto  []string      // 采用的传输层协议（TCP or UDP）
	retry_cnt     int           // 重传次数
}

type Response_Record struct {
	providerID   uint32
	serviceID    uint32
	requestID    uint32
	ueid         string
	data         []byte
	dscp         byte
	receive_time time.Time
	retry_cnt    int
}

type contextInfo struct {
	R3     int64
	R4     int64
	ueid   string
	connId int
}

type BufferKey struct {
	ueid string
	rid  uint32
}

// TrustRvaStatus 信任引擎评估后的状态
type TrustEvaStatus int

const (
	Approved TrustEvaStatus = iota //经过信任引擎评估后，允许访问
	Rejected                       // 经过信任引擎评估后，拒绝访问
)
